egg drop problem dynamic programming